www.gusucode.com > EasyJForum JSP早期论坛2.2源代码源码程序 > EasyJForum JSP早期论坛2.2源代码/ejforum2.2/ejforum-2.2/ejforum/js/common.js
/* [EasyJForum] (C)2007 Hongshee Soft. $file: common.js $ $Date: 2007/11/30 $ */ var userAgent = navigator.userAgent.toLowerCase(); var is_firefox = (navigator.product == 'Gecko') && userAgent.substr(userAgent.indexOf('firefox') + 8, 3); var is_ie = (userAgent.indexOf('msie') != -1 && !is_firefox) && userAgent.substr(userAgent.indexOf('msie') + 5, 3); var ctrlclassName = ''; var jsmenu_active; var jsmenu_iframe; var jsmenu_duration = false; var jsmenu_timer = new Array(); var msgs = new Array(); function addLoadEvent(func){ var oldonload = window.onload; if (typeof(oldonload) != 'function'){ window.onload = func; } else { window.onload = function(){ oldonload(); func(); } } } Array.prototype.push = function(value) { this[this.length] = value; return this.length; } function $(id) { return document.getElementById(id); } function trim(str) { return (str + '').replace(/(\s+)$/g, '').replace(/^\s+/g, ''); } function showMedia(url, width, height){ if (url.toLowerCase().indexOf('.swf') > 0) showFlash(url, width, height); else showMedias(url, width, height); } function showFlash(url, width, height){ document.write('<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" '); document.write('codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" '); document.write('width="'+ width + '" height="'+ height + '">'); document.write('<param name="movie" value="' + url + '"/>'); document.write('<param name="quality" value="high"/>'); document.write('<param name="wmode" value="opaque"/>'); document.write('<embed src="' + url + '" wmode="opaque" quality="high" '); document.write('width="'+ width + '" height="'+ height + '" '); document.write('type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"/>'); document.write('</object>'); } function showMedias(url, width, height){ document.write('<object classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6" '); document.write('width="'+ width + '" height="'+ height + '">'); document.write('<param name="autostart" value="0"/>'); document.write('<param name="url" value="' + url + '"/>'); document.write('<embed src="' + url + '" autostart="0" '); document.write('width="'+ width + '" height="'+ height + '" type="application/x-mplayer2"/>'); document.write('</object>'); } function checkall(form, prefix) { for(var i = 0; i < form.elements.length; i++) { var e = form.elements[i]; if(e.name && e.name != 'chkall' && (!prefix || (e.name.indexOf(prefix)==0))) { e.checked = form.elements['chkall'].checked; } } } function cancel(event) { e = event ? event : window.event; if(is_ie) { e.returnValue = false; e.cancelBubble = true; } else if(e) { e.stopPropagation(); e.preventDefault(); } } function resizeImage(img, maxsize) { if (img.width > maxsize) img.width = maxsize; if (img.height > maxsize) img.height = maxsize; } function isInArray(value, varray) { if(typeof(value) == 'string' || typeof(value) == 'number') { for(var i in varray) { if(varray[i] == value) { return true; } } } return false; } function uc_strlen(str) { var len = 0; for(var i = 0; i<str.length; i++) { len += (str.charCodeAt(i) < 0 || str.charCodeAt(i) > 255) ? (encoding == 'utf-8' ? 3 : 2) : 1; } return len; } function strlen(str) { return (is_ie && str.indexOf('\n') != -1) ? str.replace(/\r?\n/g, '_').length : str.length; } function toggle_collapse(objId) { var obj = $(objId); obj.style.display = obj.style.display == '' ? 'none' : ''; var img = $(objId + '_img'); if (img.src.indexOf('_yes.gif') == -1) img.src = img.src.replace(/_no\.gif/, '_yes\.gif'); else img.src = img.src.replace(/_yes\.gif/, '_no\.gif'); } function isLegalEmail(email) { if (email == '') return false; var islegal = /^[\-\.\w]+@[\.\-\w]+(\.\w+)+$/.test(email); return islegal; } function isLegalDate(sdate) { if (sdate == '') return true; var islegal = /^(\d{4})-(1[0-2]|0?[1-9])-(0?[1-9]|[12][0-9]|3[01])$/.test(sdate); return islegal; } function initMenu(ctrlid, menuobj, duration) { menuobj.initialized = true; menuobj.ctrlid = ctrlid; menuobj.duration = duration; menuobj.onclick = doMenuAction; menuobj.style.position = 'absolute'; menuobj.style.zIndex = 50; if(is_ie) { menuobj.style.filter += "progid:DXImageTransform.Microsoft.shadow(direction=135,color=#CCCCCC,strength=2)"; } } function showMenu(ctrlid, duration) { var ctrlobj = $(ctrlid); if(!ctrlobj) return; var menuobj = $(ctrlid + '_menu'); if(!menuobj) return; if(typeof(duration)=='undefined') duration = false; jsmenu_duration = duration; var timeout = 500; hideMenu(); for(var id in jsmenu_timer) { if(jsmenu_timer[id]) clearTimeout(jsmenu_timer[id]); } if(ctrlobj && !ctrlobj.initialized) { ctrlobj.initialized = true; ctrlobj.unselectable = true; ctrlobj.outfunc = typeof ctrlobj.onmouseout == 'function' ? ctrlobj.onmouseout : null; ctrlobj.onmouseout = function() { if(this.outfunc) this.outfunc(); if(!duration) jsmenu_timer[ctrlobj.id] = setTimeout('hideMenu()', timeout); } if(duration) { ctrlobj.clickfunc = typeof ctrlobj.onclick == 'function' ? ctrlobj.onclick : null; ctrlobj.onclick = function (e) { cancel(e); if(jsmenu_active == null || jsmenu_active.ctrlid != this.id) { if(this.clickfunc) this.clickfunc(); else showMenu(this.id, true); } else { hideMenu(); } } } ctrlobj.overfunc = typeof ctrlobj.onmouseover == 'function' ? ctrlobj.onmouseover : null; ctrlobj.onmouseover = function(e) { cancel(e); if(this.overfunc) this.overfunc(); for(var id in jsmenu_timer) { if(jsmenu_timer[id]) clearTimeout(jsmenu_timer[id]); } } } ctrlclassName = ctrlobj.className; ctrlobj.className += ' hover'; if(menuobj && !menuobj.initialized) { initMenu(ctrlid, menuobj, duration); if(!duration) { menuobj.onmouseover = function() { clearTimeout(jsmenu_timer[ctrlid]); } menuobj.onmouseout = function() { jsmenu_timer[ctrlid] = setTimeout('hideMenu()', timeout); } } } menuobj.style.display = ''; menuobj.style.clip = 'rect(auto, auto, auto, auto)'; setMenuPos(ctrlobj, menuobj); if(is_ie && is_ie < 7) { if(!jsmenu_iframe) { var iframe = document.createElement('iframe'); iframe.style.display = 'none'; iframe.style.position = 'absolute'; iframe.style.filter = 'progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)'; jsmenu_iframe = iframe; menuobj.parentNode.appendChild(jsmenu_iframe); } jsmenu_iframe.style.top = menuobj.style.top; jsmenu_iframe.style.left = menuobj.style.left; jsmenu_iframe.style.width = menuobj.w; jsmenu_iframe.style.height = menuobj.h; jsmenu_iframe.style.display = 'block'; } if(menuobj.scrollHeight > 400) { menuobj.style.height = '400px'; menuobj.style.overflowY = 'auto'; } jsmenu_active = menuobj; } function setMenuPos(ctrlobj, menuobj) { if(ctrlobj) { ctrlobj.pos = getOffset(ctrlobj); ctrlobj.X = ctrlobj.pos['left']; ctrlobj.Y = ctrlobj.pos['top']; ctrlobj.w = ctrlobj.offsetWidth; ctrlobj.h = ctrlobj.offsetHeight; menuobj.w = menuobj.offsetWidth; menuobj.h = menuobj.offsetHeight; if ((ctrlobj.X + menuobj.w > document.body.clientWidth) && (ctrlobj.X + ctrlobj.w - menuobj.w >= 0)) menuobj.style.left = ctrlobj.X + ctrlobj.w - menuobj.w + 2 + 'px'; else if(is_ie && is_ie >= 7) menuobj.style.left = ctrlobj.X + 1 + 'px'; else menuobj.style.left = ctrlobj.X + 'px'; if ((ctrlobj.Y + ctrlobj.h + menuobj.h > document.documentElement.scrollTop + document.documentElement.clientHeight) && (ctrlobj.Y - menuobj.h >= 0)) menuobj.style.top = (ctrlobj.Y - menuobj.h) + 'px'; else menuobj.style.top = ctrlobj.Y + ctrlobj.h + 'px'; if(menuobj.style.clip) { menuobj.style.clip = 'rect(auto, auto, auto, auto)'; } } } function hideMenu() { if(jsmenu_active) { try { $(jsmenu_active.ctrlid).className = ctrlclassName; } catch(e) {} clearTimeout(jsmenu_timer[jsmenu_active.ctrlid]); jsmenu_active.style.display = 'none'; jsmenu_active = null; if(is_ie && is_ie < 7 && jsmenu_iframe) { jsmenu_iframe.style.display = 'none'; } } } function getOffset(obj) { var offset_left = obj.offsetLeft; var offset_top = obj.offsetTop; while((obj = obj.offsetParent) != null) { offset_left += obj.offsetLeft; offset_top += obj.offsetTop; } if(is_ie && is_ie < 7 && !jsmenu_duration) { offset_left += 1; offset_top += 1; } return {'left':offset_left, 'top':offset_top}; } function doMenuAction(eventobj) { if(!eventobj || is_ie) { window.event.cancelBubble = true; return window.event; } else { if(eventobj.target.type == 'submit') { eventobj.target.form.submit(); } eventobj.stopPropagation(); if (!jsmenu_duration) hideMenu(); return eventobj; } } function changeStyle(styleID) { var url = window.location + ''; var p = url.indexOf("#"); if (p > 0) url = url.substr(0, p); p = url.indexOf("style="); if (p > 0) window.location = url.substr(0, p) + "style=" + styleID; else if (url.indexOf("?") > 0 || url.indexOf(".html") > 0) window.location = url + "&style=" + styleID; else window.location = url + "?style=" + styleID; }